1. Field of the Invention
This invention relates, in general, to sensor networking applications and, in particular, to the automatic generation of all the components of a sensor networking system to suit a particular application.
2. Background of the Invention
Large networks of sensors or actuators are believed to play an increasing role in a variety of applications. Such applications cover a wide range of applications including seismic monitoring, precision agriculture, environmental and atmospheric monitoring, automated electricity, gas and water meter reading, industrial control and automation etc.
While in each case the fundamental nature of the sensor or actuator network remains the same, i.e., to monitor one or more physical quantities and send the data to a back-end data processing system and to control an appliance or device, the wide variety of applications these networks will be employed in implies that the application software used in these networks will be completely different from application to application. Moreover, contrary to present information technology equipment, the application software that drives these networks of sensors or actuators will reside in most cases in small embedded “nodes” with very strict memory and energy constraints. This fact, in turn, implies that the software will be required to be highly optimized for each application.
The tasks of developing new custom application software for each of these applications, and optimizing and testing it will be extremely time and resource consuming. Application software development then becomes the major bottleneck in the rapid deployment of sensor networks. Thus, a scheme whereby the development of a new application for sensor or actuator networks can be largely automated is highly desirable. However, in considering any such automated scheme, the requirement for a high degree of optimization must be kept in mind. As mentioned earlier, by their very nature sensor networks require highly optimized software because of their tight constraints. Therefore, for example, a single platform software application that is capable of generally handling any application is highly unlikely to be a viable solution since such a generalized software will necessarily be sub-optimal for any particular application and may indeed not meet the constraints.
Examples of automated software generation do exist in the prior art. One category of these examples uses a library of parts from which parts are picked to generate new programs. U.S. Pat. No. 4,949,253, issued to Eiki Chigira et al, and incorporated herein for reference, describes one such scheme whereby parts are picked from a library to form a whole application. In order to allow the parts to co-exist and co-operate—a requirement in any application—their interfaces are changed according specifications entered by the user so that a part's interface can be matched to another part's interface. The first problem in this scheme is that the user must pick the parts to be integrated; there is no provision for automation. The second major problem with this approach is that interfaces must be changed according to specifications entered by the user, who is thus forced to examine parts and construct ways to achieve matches between mismatched parts. The degree of automation in this scheme is thus only partial and the scheme becomes impractical when there are a large number of parts to combine. U.S. Pat. No. 5,315,710, issued to Kishimoto et al., and incorporated herein for reference, provides another example in the same category. In this patent, parts are again chosen from a library but the modifications to the interfaces of the parts to allow for parts to co-operate proceeds according to pre-defined rules. Therefore, once again, the user is forced to invent rules for each possible mismatch. Further, even if the rules are in place, the rule mechanism used to match the interfaces is necessarily limited in its scope and cannot handle complex situations such as a part needing to interface to multiple other parts, or vice versa. Such situations however commonly arise in complex application software.
A different category of automated application software synthesizer is proposed in U.S. Pat. No. 5,038,296, issued to Yasuko Sano, and incorporated herein for reference. In this system, a specification set and a rule set define a target program through the description of operations to be performed on a data represented by variables. This system suffers from the disadvantage that the specification set essentially outlines the target program, with the rules describing the functional sub-steps to perform during program synthesis. Thus, a close concordance is required between the specification, the rules and the target program to synthesize a program. In a complex application software requiring many simultaneous interactions and multiple threads of execution, the specification will become equally complex and will be akin to writing the whole application software.
Yet another type of automated program generator is described in U.S. Pat. No. 6,257,774, issued to Brian T. Stack and incorporated herein for reference. This patent describes a system whereby the application software is divided into a hierarchical tree of sub-systems. The user then chooses the required functionality by picking units, from presumably a pre-existing list of such units, at each level of the tree using an image editor, and customizes the data fields of each unit. Thus, this patent too requires the user to actually choose the sub-units of the program.
Other categories of automated program generators have been proposed. These are based on expert systems that typically simplify the input required from the user. These expert systems are complex and difficult to maintain and, moreover, do not produce compilable or executable programs. It is thus seen that all automated application software generation schemes proposed in the prior art have particular failings.
A further major shortcoming of all systems in the proposed art is that none of these schemes makes any provision for evaluating the performance metrics of the generated application software. As mentioned earlier, the constraints of memory, energy and computational power in a sensor network are extremely tight. Thus, it naturally follows that any automated application software system targeted for sensor networking applications must make provisions for evaluating such performance metrics for the generated application. The fact that none of the systems described in the prior art make such a provision renders them largely unsuitable for use in automated generation of application software for sensor networking applications.
It is thus the objective of the present invention to provide a system that allows fully automated generation of application software for sensor or actuator networks with only minimal user input. A further objective of the present invention is that such an automated generation system also provide the capability to evaluate performance metrics for the automatically generated software.